home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
- SXTNVIEW.DOC
-
- SXTNVIEW - SXTN Database Viewer Sample Application
-
- The SXTNVIEW program is intended as a sample application to
- demonstrate the use of the DLL interface functions to access
- the SXT databases. Each SXT windows version provides its
- specific DLL (CFTN16.DLL, CSTN16.DLL, ...) together with the
- necessary C/C++ header file (CFTNWIN.H, CSTNWIN.H, ...) and an
- import library (CFTN16.LIB, CSTN16.LIB, ...) that can be linked
- to your programs. SXTNVIEW is a very simple application written
- in Visual Basic with complete source code included. SXTNVIEW
- works with all SXT DLL's and demonstrates the access to all SXT
- database types.
-
- To run SXTNVIEW, the Visual Basic runtime library VB40016.DLL
- (not included in this package) installed in the \windows\system
- directory is required. It is also necessary to copy the SXT
- DLL's to the \windows\system directory.
-
- After starting SXTNVIEW you have to select the SXT program type
- and the database from the file dialog box. Select one *.dbf
- file that belongs to the project you want to view. After that
- you can view in two list boxes the items (functions/data
- types), either all or only the defined ones, and the filenames
- by pressing push buttons next to these list boxes. By a double
- click on an item you get its location (filename, line number)
- where it is defined/ first found. By a double click on a
- filename you get a list of all defined items in that file. You
- can also directly type the name of an item into the 'Search
- for' text box and start a search with the push button. If an
- item name is in the search box you can press the 'Get Called
- Item' button to retrieve all items which are called from the
- item.
-
- Any running action can be safely stopped by pressing the 'Stop
- Action' button. The system returns to default state.
-
-
- DLL INTERFACE FUNCTIONS
-
- The following description is given for the CFT version but
- applies in the same way to all other SXT programs. The user who
- calls one of these functions has to ensure that the calling
- parameters are large enough to hold the resulting value. In
- general, the strings should be a minimum of 300 characters long
- (char location[300], char name[300], ...).
-
- Some functionality is split into a pair of two closely related
- functions, like cftnGetFirstName() and cftnGetNextName(). The
- user has to ensure that they are called in a direct sequence
- and that there are no intermediate calls, also from other
- applications. Otherwise the results will be incorrect. The
- reason for the split of the functionality is that it is not
- possible to determine the amount of memory to hold the results
- of the function call in advance by the calling function. It
- would have been possible to grow the memory dynamically during
- search operation by the DLL, return a pointer to the memory and
-
- 1
-
-
-
- leave it to the application to free it after use. This would
- work with C but not with Visual Basic or application macro
- languages like Word Basic and Visual Basic for Applications.
-
- The return values of all DLL functions are 101 if successful,
- all other values mean that something went wrong (e.g. database
- not found, database is not a SXT database, item does not exist,
- out of memory, ...).
-
- Following is a description of the DLL-functions:
-
- LONG WINAPI cftnGetLocation(LPSTR dbfname, LPSTR name, LPSTR
- location);
- Get the location of a specific item, if the return value is 101
- a location for item was found.
- dbfname the database name
- name the name of the item
- location contains a string with the location
- (filename<space>line number) of the item
-
- LONG WINAPI cftnGetFirstName(LPSTR dbfname, LPSTR name);
- Get the first item from the database, must be called once
- before cftnGetNextName.
- dbfname the database name
- name contains a string with the item name
-
- LONG WINAPI cftnGetNextName(LPSTR dbfname, LPSTR name);
- Get the next item from the database, must be called after
- cftnGetFirstName, as long as the return value is 101 a new name
- is retrieved.
- dbfname the database name
- name contains a string with the item name
-
- LONG WINAPI cftnGetFirstDefName(LPSTR dbfname, LPSTR name);
- Get the first defined item from the database, must be called
- once before cftnGetNextDefName.
- dbfname the database name
- name contains a string with the defined item name
-
- LONG WINAPI cftnGetNextDefName(LPSTR dbfname, LPSTR name);
- Get the next defined item from the database, must be called
- after cftnGetFirstDefName, as long as the return value is 101 a
- new name is retrieved.
- dbfname the database name
- name contains a string with the defined item name
-
- LONG WINAPI cftnGetFirstCalledItem(LPSTR dbfname, LPSTR caller,
- LPSTR calleditem, LPSTR location);
- Get the first called item of caller from the database, must be
- called once before cftnGetNextCalledItem.
- dbfname the database name
- caller contains a string with the name of the caller
- calleditem contains a string with the first called item
- location contains a string with the location
- (filename<space>line number) of the item
-
-
-
-
- 2
-
-
-
- LONG WINAPI cftnGetNextCalledItem(LPSTR dbfname, LPSTR caller,
- LPSTR calleditem, LPSTR location);
- Get the next called item of caller from the database, must be
- called after cftnGetFirstCalledItem, as long as the return
- value is 101 a new called item is retrieved.
- dbfname the database name
- caller contains a string with the name of the caller
- calleditem contains a string with the first called item
- location contains a string with the location
- (filename<space>line number) of the item
-
- LONG WINAPI cftnGetFirstFile(LPSTR dbfname, LPSTR filename);
- Get the first file from the database, must be called once
- before cftnGetFirstFile.
- dbfname the database name
- name contains a string with the filename
-
- LONG WINAPI cftnGetNextFile(LPSTR dbfname, LPSTR filename);
- Get the next file from the database, must be called after
- cftnGetFirstFile, as long as the return value is 101 a new file
- is retrieved.
- dbfname the database name
- name contains a string with the filename
-
-
- THE VISUAL BASIC EXAMPLE 'SXTNVIEW'
-
- Following is a short, incomplete extract from the SXTNVIEW
- Visual Basic source code to show some implementation details.
-
- 1. DLL-FUNCTION DECLARATION
- The DLL-functions have to be declared in the following way:
-
- Declare Function cftnGetLocation Lib "cftn16.dll" (ByVal
- dbfname$, ByVal searchname$, ByVal location$) As Long
- Declare Function cftnGetFirstName Lib "cftn16.dll" (ByVal
- dbfname$, ByVal location$) As Long
- Declare Function cftnGetNextName Lib "cftn16.dll" (ByVal
- dbfname$, ByVal location$) As Long
- Declare Function cftnGetFirstDefName Lib "cftn16.dll" (ByVal
- dbfname$, ByVal location$) As Long
- Declare Function cftnGetNextDefName Lib "cftn16.dll" (ByVal
- dbfname$, ByVal location$) As Long
- Declare Function cftnGetFirstCalledItem Lib "cftn16.dll" (ByVal
- dbfname$, ByVal caller$, ByVal calleditem$, ByVal
- location$) As Long
- Declare Function cftnGetNextCalledItem Lib "cftn16.dll" (ByVal
- dbfname$, ByVal caller$, ByVal calleditem$, ByVal
- location$) As Long
- Declare Function cftnGetFirstFile Lib "cftn16.dll" (ByVal
- dbfname$, ByVal location$) As Long
- Declare Function cftnGetNextFile Lib "cftn16.dll" (ByVal
- dbfname$, ByVal location$) As Long
- (similar for the other DLL's)
-
- 2. CALLING THE RIGHT SXT FUNCTION
- The SXTNVIEW functions call for every DLL-related function an
- intermediate function where, according to the selected SXT
-
- 3
-
-
-
- type, the right DLL-function is called. This simplifies the
- source code.
-
- Function sxtnGetFirstName (dbfname$, location$) As Long
- If option1.Value = True Then
- sxtnGetFirstName = cftnGetFirstName(dbfname, location)
- ElseIf option2.Value = True Then
- sxtnGetFirstName = cstnGetFirstName(dbfname, location)
- ElseIf option3.Value = True Then
- sxtnGetFirstName = dftnGetFirstName(dbfname, location)
- ElseIf option4.Value = True Then
- sxtnGetFirstName = fftnGetFirstName(dbfname, location)
- ElseIf option5.Value = True Then
- sxtnGetFirstName = lftnGetFirstName(dbfname, location)
- End If
- End Function
- (similar for the other SXT DLL functions)
-
- 3. FUNCTION TO RETRIEVE THE LOCATION OF A SPECIFIC ITEM
- Sub Command2_Click ()
- Dim dbfname As String
- Dim searchname As String
- Dim result As String
- result = String$(300, 0)
- dbfname = label1.Caption
- searchname = text1.Text
- If Left(dbfname$, 1) <> "" And Left(searchname$, 1) <> ""
- Then
- retval = sxtnGetLocation(dbfname$, searchname$, result$)
- label7.Caption = result$
- End If
- End Sub
-
- 4. FUNCTION TO RETRIEVE ALL FILES
- Sub Command3_Click ()
- Dim string1 As String
- Dim result As String
- string1$ = label1.Caption
- result = String$(300, 0)
- list2.Clear
- If Left(string1$, 1) <> "" Then
- retval = sxtnGetFirstFile(string1$, result$)
- If retval = 101 Then
- list2.AddItem result$
- Do
- retval = sxtnGetNextFile(string1$, result$)
- If retval = 101 Then
- list2.AddItem result$
- Else
- Exit Do
- End If
- Loop While retval = 101
- End If
- End If
- label6.Caption = Str$(list2.ListCount) + " files"
- End Sub
-
-
-
- 4
-
-
-
- 5. FUNCTION TO RETRIEVE ALL ITEMS
- Sub Command4_Click ()
- Dim dbfname As String
- Dim result As String
- dbfname$ = label1.Caption
- result = String$(300, 0)
- list1.Clear
- If Left(dbfname$, 1) <> "" Then
- retval = sxtnGetFirstName(dbfname$, result$)
- If retval = 101 Then
- list1.AddItem result$
- Do
- retval = sxtnGetNextName(dbfname$, result$)
- If retval = 101 Then
- list1.AddItem result$
- Else
- Exit Do
- End If
- Loop While retval = 101
- End If
- End If
- label5.Caption = Str$(list1.ListCount) + " items"
- End Sub
-
- 6. FUNCTION TO RETRIEVE ALL DEFINED ITEMS
- Sub Command5_Click ()
- Dim dbfname As String
- Dim result As String
- dbfname$ = label1.Caption
- result = String$(300, 0)
- list1.Clear
- If Left(dbfname$, 1) <> "" Then
- retval = sxtnGetFirstDefName(dbfname$, result$)
- If retval = 101 Then
- list1.AddItem result$
- Do
- retval = sxtnGetNextDefName(dbfname$, result$)
- If retval = 101 Then
- list1.AddItem result$
- Else
- Exit Do
- End If
- Loop While retval = 101
- End If
- End If
- label5.Caption = Str$(list1.ListCount) + " defined items"
- End Sub
-
- 7. FUNCTION TO RETRIEVE ALL ITEMS DEFINED IN A SPECIFIC FILE
- Sub List2_DblClick ()
- Dim dbfname As String
- Dim searchname As String
- Dim result As String
- dbfname$ = label1.Caption
- result = String$(300, 0)
- FileName = list2.List(list2.ListIndex)
- list1.Clear
- If Left(dbfname$, 1) <> "" Then
-
- 5
-
-
-
- retval = sxtnGetFirstDefName(dbfname$, result$)
- If retval = 101 Then
- searchname = Left$(result, InStr(1, result, Chr$(0),1) -
- 1)
- result = String$(300, 0)
- retval = sxtnGetLocation(dbfname$, searchname$, result$)
- If retval = 101 Then
- If InStr(1, result, FileName, 1) Then
- list1.AddItem searchname$
- End If
- End If
- End If
- Do
- retval = sxtnGetNextDefName(dbfname$, result$)
- If retval = 101 Then
- searchname = Left$(result, InStr(1, result, Chr$(0),1)-
- 1)
- result = String$(300, 0)
- retval = sxtnGetLocation(dbfname$, searchname$,
- result$)
- If retval = 101 Then
- If InStr(1, result, FileName, 1) Then
- list1.AddItem searchname$
- End If
- End If
- Else
- Exit Do
- End If
- Loop While retval = 101
- End If
- label5.Caption = Str$(list1.ListCount) + " defined items in "
- + FileName
- End Sub
-
- 8. FUNCTION TO RETRIEVE ALL CALLED ITEMS OF A SPECIFIC ITEM
- Sub Command6_Click ()
- Dim dbfname As String
- Dim caller As String
- Dim location As String
- Dim calleditem As String
- dbfname$ = label1.Caption
- calleditem = String$(300, 0)
- location = String$(300, 0)
- caller = text1.Text
- list1.Clear
- If Left(dbfname$, 1) <> "" Then
- retval = sxtnGetFirstCalledItem(dbfname$, caller$,
- calleditem$, location$)
- If retval = 101 Then
- list1.AddItem calleditem$
- Do
- retval = sxtnGetNextCalledItem(dbfname$, caller$,
- calleditem$, location$)
- If retval = 101 Then
- list1.AddItem calleditem$
- Else
- Exit Do
- End If
-
- 6
-
-
-
- Loop While retval = 101
- End If
- End If
- label5.Caption = Str$(list1.ListCount) + " called items"
- End Sub
-
-
- FURTHER DEVELOPMENT
-
- The above example demonstrates the capabilities of the SXT-
- DLL's. They can be called from any Windows application, e.g. MS
- Word for Windows, MS Excel, MS Access, CodeWright Editor, or
- from user developed applications.
-
-
-
- Copyright (C) Juergen Mueller (J.M.) 1988-1996.
- All rights reserved world-wide.
-
- SXT (TM) SOFTWARE EXPLORATION TOOLS
- SXTWIN (TM) SOFTWARE EXPLORATION TOOLS for Windows
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 7